String.prototype.trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.ltrim = function(){
    return this.replace(/(^\s*)/g,"");
}
String.prototype.rtrim = function(){
    return this.replace(/(\s*$)/g,"");
}

//xss过滤
function xss_filter(str){
    return str
            .replace(/&/g, "&amp;")
            .replace(/</g, "&lt;")
            .replace(/>/g, "&gt;")
            .replace(/"/g, "&quot;")
            .replace(/'/g, "&acute;");
}

//换行符转化为<br>
function html_newline(str){
    return str.replace(/\n/g, '<br>');
}

//字符串验证
var simple_validate = {
    //验证是否为空字符串
    required : function(str){
        str = str.trim();
        if(str == ''){
            return false;
        }
        return true;
    },

    //验证邮箱
    email : function(str){
        var reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
        return reg.test(str);
    },

    //验证昵称
    nickname : function(str){
        var reg = /^[\u4e00-\u9fa5a-zA-Z0-9-]{1,16}$/;
        return reg.test(str);
    },

    //验证手机号
    mobile : function(str){
        var reg = /^1[34578]\d{9}$/;
        return reg.test(str);
    },

    //验证QQ号
    qq : function(str){
        var reg = /[1-9][0-9]{4,10}/;
        return reg.test(str);
    },

    //长度范围
    range : function(str, min, max){
        if(str.length >= min && str.length < max){
            return true;
        }
        return false;
    },

    //长度范围(中英文混合)
    mix_range : function(str, min, max){
        var len = 0;
        for (var i = 0; i < str.length; i++) {
            var c = str.charCodeAt(i);
            //单字节加1,双字节加2
            if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
                len++;
            }
            else {
                len += 2;
            }
        }
        if(len >= min && len <= max){
            return true;
        }
        return false;
    },

    //验证0或大于0的整数
    number : function(str){
        var reg = /^(0|[1-9][0-9]*)$/;
        return reg.test(str);
    }
};

//错误信息
var __errors__ = {
                '0' : '查无结果',
                '-100001' : '缺少参数',
                '-200001' : '账号注册失败',
                '-200002' : '账号登录失败',
                '-200003' : '获取用户信息失败',
                '-200004' : '用户信息更新失败',
                '-200005' : '此操作需要登录',
                '-200006' : '消息更新失败',
                '-200007' : '删除组织失败',
                '-200008' : '删除项目失败',
                '-200009' : '删除小组失败',
                '-200010' : '设置默认项目失败',
                '-200011' : '删除任务失败',
                '-200012' : '获取文件列表失败',
                '-200013' : '新建文件夹失败',
                '-200014' : '删除文件失败',
                '-200015' : '非法操作',
                '-200016' : '任务状态更新失败',
                '-200017' : '任务已结束(任务已验收通过或已取消)',
                '-200018' : '文件重命名失败',
                '-200019' : '获取任务失败(此任务不存在)',
                '-200020' : '任务已完成或结束(验收通过或已取消)',
                '-200021' : '任务延期失败',
                '-200022' : '任务添加失败',
                '-200023' : '文件夹名已存在',
                '-200024' : '文件名已存在',
                '-200025' : '任务挂起或重新激活失败',
                '-200026' : '任务置顶或取消置顶失败',
                '-200027' : '任务追加失败',
                '-200028' : '任务收藏失败',
                '-200029' : '任务取消收藏失败',
                '-200030' : '任务邮件通知，邮件发送失败',
                '-200031' : '任务微信通知，消息发送失败，对方未绑定微信',
                '-200032' : '任务微信通知，消息发送失败，对方未关注官方公众号',
                '-200033' : '任务微信通知，消息发送失败',
                '-200034' : '组织添加失败',
                '-200035' : '组织添加失败(组织用户添加失败)',
                '-200036' : '项目添加失败(所选组织不存在)',
                '-200037' : '项目添加失败',
                '-200038' : '小组添加失败(所选项目不存在)',
                '-200039' : '小组添加失败',
                '-200040' : '组织删除失败，请先删除此组织下的所有项目',
                '-200042' : '组织更新失败',
                '-200043' : '项目更新失败',
                '-200044' : '小组更新失败',
                '-200045' : '项目添加失败(组织用户添加失败)',
                '-200046' : '任务添加失败(任务记录添加失败)',
                '-200047' : '任务领取失败(任务记录添加失败)',
                '-200048' : '任务完成失败(任务记录添加失败)',
                '-200049' : '任务验收失败(任务记录添加失败)',
                '-200050' : '任务追加失败(任务记录添加失败)',
                '-200051' : '任务挂起失败(任务记录添加失败)',
                '-200052' : '任务取消失败(任务记录添加失败)',
                '-200053' : '任务转交失败(任务记录添加失败)',
                '-200054' : '任务转交失败(转交对象与原任务负责人相同)',
                '-200055' : '任务延期失败(任务记录添加失败)',
                '-200056' : '邀请成员加入小组时的一键注册失败(参数错误)',
                '-200057' : '邀请成员加入小组时的一键注册失败(链接过期)',
                '-200058' : '邀请成员加入小组时的一键注册失败(小组不存在)',
                '-200059' : '邀请成员加入小组时的一键注册失败(邮箱格式不对)',
                '-200060' : '邀请成员加入小组时的一键注册失败(密码格式不对)',
                '-200061' : '邀请成员加入小组时的一键注册失败',
                '-200062' : '邮箱已被注册',
                '-200063' : '任务模板更新失败',
                '-200064' : '皮肤背景图片锁定失败(用户没有使用皮肤)',
                '-200065' : '小组添加成员失败(小组不存在)',
                '-200066' : '小组添加成员失败(该成员已在此项目中了)',
                '-200067' : '小组添加成员失败',
                '-200068' : '组织/项目更改隐藏状态失败',
                '-200069' : '正在使用的组织/项目无法更改隐藏状态',
                '-200070' : '更新头像失败',
                '-200071' : '解除绑定关联账号失败',
                '-200072' : '绑定邮箱失败，邮箱格式错误',
                '-200073' : '绑定邮箱失败，此账号已绑定了邮箱',
                '-200074' : '绑定邮箱失败，此邮箱已被其它账号绑定',
                '-200075' : '重发验证邮箱失败，此账号还未绑定邮箱',
                '-200076' : '重发验证邮箱失败，此账号邮箱已激活',
                '-200077' : '绑定邮箱失败，密码长度应为6-16位',
                '-200079' : '用户反馈失败',
                '-200080' : '获取反馈失败(不存在)',
                '-200081' : '回复反馈失败(此反馈不存在)',
                '-200082' : '反馈忽略失败(反馈已转交任务或已回复)',
                '-200083' : '反馈忽略失败',
                '-200084' : '反馈忽略失败(反馈记录添加失败)',
                '-200085' : '更新组织失败(没有权限)',
                '-200086' : '添加项目失败(没有权限)',
                '-200087' : '更新项目失败(没有权限)',
                '-200088' : '添加小组失败(没有权限)',
                '-200089' : '更新小组失败(没有权限)',
                '-200090' : '删除组织失败(没有权限)',
                '-200091' : '删除项目失败(没有权限)',
                '-200092' : '删除小组失败(没有权限)',
                '-200093' : '更新任务模板失败(没有权限)',
                '-200094' : '添加/更新友链失败(没有权限)',
                '-200095' : '添加成员失败(没有权限)',
                '-200096' : '邀请成员失败(没有权限)',
                '-200097' : '获取任务失败(没有权限)',
                '-200098' : '添加任务失败(没有权限)',
                '-200099' : '更新任务状态失败(没有权限)',
                '-200100' : '追加任务失败(没有权限)',
                '-200101' : '延期任务失败(没有权限)',
                '-200102' : '转交任务失败(没有权限)',
                '-200103' : '置顶任务失败(没有权限)',
                '-200104' : '挂起任务失败(没有权限)',
                '-200105' : '收藏任务失败(没有权限)',
                '-200106' : '取消任务失败(没有权限)',
                '-200107' : '任务微信通知失败(没有权限)',
                '-200108' : '任务邮件通知失败(没有权限)',
                '-200109' : '获取用户反馈失败(没有权限)',
                '-200110' : '回复用户反馈失败(没有权限)',
                '-200111' : '取消用户反馈失败(没有权限)',
                '-200112' : '领取任务失败(只有任务执行者才可领取任务)',
                '-200113' : '完成任务失败(只有任务执行者才可完成任务)',
                '-200114' : '验收任务失败(只有任务创建者才可验收任务)',
                '-200115' : '追加任务失败(只有任务创建者才可追加任务)',
                '-200116' : '延期任务失败(只有任务创建者才可延期任务)',
                '-200117' : '转交任务失败(只有任务创建者才可转交任务)',
                '-200118' : '置顶任务失败(只有项目经理或组长才可置顶任务)',
                '-200119' : '挂起/激活任务失败(只有任务创建者才可挂起/激活任务)',
                '-200120' : '取消任务失败(只有任务创建者才可取消任务)',
                '-200121' : '微信通知任务失败(只有任务创建者才可微信通知任务)',
                '-200122' : '邮件通知任务失败(只有任务创建者才可邮件通知任务)',
                '-200123' : '任务评论失败',
                '-200124' : '任务评论失败(没有权限)',
                '-200125' : '删除成员失败(没有权限)',
                '-200126' : '删除成员失败(此成员为项目经理，请先重新指定项目经理)',
                '-200127' : '删除成员失败(此成员为组长，请先重新指定该组组长)',
                '-200128' : '删除成员失败',
                '-200129' : '删除小组失败(请先删除小组成员)',
                '-200130' : '设置角色失败(没有权限)',
                '-200131' : '设置角色失败(此成员已是项目经理，请先设置其他成员为新的项目经理)',
                '-200132' : '设置角色失败(此成员已是组长，请先设置其他成员为新的组长)',
                '-200133' : '设置角色失败',
                '-200134' : '设置项目经理失败(没有权限，只有项目组织拥有者才可设置项目经理)',
                '-200135' : '设置项目经理失败(此成员已是项目经理)',
                '-200136' : '设置项目经理失败(此成员已是组长，请先为该组指定新的组长)',
                '-200137' : '设置项目经理失败',
                '-200138' : '验收任务不通过失败(没有权限)',
                '-200139' : '验收任务不通过失败(只有任务创建者才可验收任务)',
                '-200140' : '验收任务不通过失败(只有已完成任务才可验收)',
                '-200141' : '验收任务不通过失败(任务记录添加失败)',
                '-200142' : '验收任务不通过失败',
                '-200143' : '删除成员失败(此成员为项目拥有者，禁止删除)',
                '-200144' : '获取组长失败(没有权限)',
                '-200145' : '邀请成员邮件发送失败(该组还没有组长，请先邀请组长)',
                '-200146' : '从其它项目添加成员失败(该组还没有组长，请先添加组长)',
                '-200147' : '添加成员失败(该组还没有组长，请先添加组长)',
                '-200148' : '验证码错误(Geetest)，请刷新验证码重试',
                '-200149' : '验证码错误，请刷新验证码重试',
                '-200150' : '账号登录失败(数据格式验证错误)',
                '-200151' : '账号登录失败(账号或密码错误)',
                '-200152' : '账号登录失败(异常)',
                '-200153' : '账号注册失败(数据格式验证错误)',
                '-200154' : '账号注册失败(邮箱已被注册)',
                '-200155' : '账号注册失败(异常)',
                '-200156' : '任务邮件通知失败，对方账号未绑定邮箱',
                '-200157' : '验收任务不通过失败(不通过原因不能为空)',
                '-200158' : '提交反馈失败(请填写反馈内容)',
                '-200159' : '提交反馈失败(反馈内容长度为10~140字符)',
                '-200160' : '提交反馈失败(请填写邮箱)',
                '-200161' : '提交反馈失败(请填写正确的邮箱)',
                '-200162' : '提交反馈失败(邮箱最大长度为30)',
                '-200163' : '提交反馈失败(请填写正确的手机号码或者留空)',
                '-200164' : '提交反馈失败(请填写正确的QQ号码或者留空)',
                '-200165' : '组织添加失败(组织超过了数量限制)',
                '-200166' : '项目添加失败(项目超过了数量限制)',
                '-200167' : '小组添加失败(项目小组超过了数量限制)',
                '-200168' : '成员添加失败(项目成员超过了数量限制)',
                '-200169' : '从其它项目添加成员失败(项目成员超过了数量限制)',
                '-200170' : '从其它项目添加成员失败(此用户不属于本组织)',
                '-200171' : '任务添加失败(任务内容为20-280字符)',
                '-200172' : '任务完成失败(备注说明最大长度为280字符)',
                '-200173' : '任务验收通过失败(备注说明最大长度为280字符)',
                '-200174' : '任务追加失败(任务追加内容长度为20-280字符)',
                '-200175' : '任务验收不通过失败(备注说明长度为10-280字符)',
                '-200176' : '任务评论失败(评论内容长度为10-280字符)',
                '-200177' : '回复反馈失败(反馈回复内容长度为10-280字符)',
                '-200178' : '添加/更新组织失败(组织名长度为1-32字符)',
                '-200179' : '添加/更新项目失败(组织名长度为1-32字符)',
                '-200180' : '添加/更新小组失败(组织名长度为1-32字符)',
                '-200181' : '添加/更新小组失败(组织名长度为1-32字符)',
                '-200182' : '获取任务失败(此任务编号不存在)',
                '-200183' : '解绑失败，请先绑定邮箱',
                '-200185' : '删除小组失败(项目至少应有1个小组)',
                '-200186' : '账号完善失败，请先使用社交账号登录',
                '-200187' : '账号完善失败，昵称只能为中文、字母、数字或横线-',
                '-200188' : '账号完善失败，请填写昵称',
                '-200189' : '账号完善失败，昵称已被占用',
                '-200190' : '任务索引添加失败，无权添加索引',
                '-200191' : '任务索引更新失败，无权更新索引',
                '-200192' : '登录失败，邮箱不能为空',
                '-200193' : '登录失败，邮箱长度不能超过30个字符',
                '-200194' : '登录失败，邮箱格式错误',
                '-200195' : '登录失败，密码不能为空',
                '-200196' : '登录失败，密码长度为6-16个字符',
                '-200197' : '注册失败，邮箱不能为空',
                '-200198' : '注册失败，邮箱长度不能超过30个字符',
                '-200199' : '注册失败，邮箱格式错误',
                '-200200' : '注册失败，密码不能为空',
                '-200201' : '注册失败，密码长度为6-16个字符',
                '-200202' : '注册失败，昵称不能为空',
                '-200203' : '注册失败，昵称长度为1-16位，1个中文算2个字符',
                '-200204' : '注册失败，昵称只能为中文、字母、数字或横线-',
                '-200205' : '绑定已有账号失败，请先使用社交账号登录',
                '-200206' : '绑定已有账号失败，邮箱不能为空',
                '-200207' : '绑定已有账号失败，邮箱长度不能超过30个字符',
                '-200208' : '绑定已有账号失败，邮箱格式错误',
                '-200209' : '绑定已有账号失败，密码不能为空',
                '-200210' : '绑定已有账号失败，密码长度为6-16个字符',
                '-200211' : '绑定已有账号失败，账号或密码错误',
                '-200212' : '绑定已有账号失败，此社交账号已被其它邮箱账号绑定了',
                '-200213' : '绑定已有账号失败，此邮箱账号已绑定了此类社交账号，不可重复绑定',
                '-200214' : '重置密码失败，原密码长度为6-16个字符',
                '-200215' : '重置密码失败，新密码长度为6-16个字符',
                '-200216' : '重置密码失败，原密码错误',
                '-200217' : '观察者角色无权限此操作'
             };

//显示错误信息
function show_error(error_code){
    layer.alert(__errors__[error_code], {icon:5, shade:0, title:'错误代码：' + error_code});
}

/*******************************************我是华丽的分割线****************************************************/

//按键事件
$(function(){
	$('html').on('keyup', '>body', function(e){
        //如果ctrl或者alt或者shift键被按住，则不执行快捷键
        if(e.ctrlKey || e.altKey || e.shiftKey){
            return;
        }
        
        //esc键关闭弹窗(只关闭最后一个弹出层,防止点一下esc关闭了所有弹出层)
        if (e.keyCode == 27) {
            var $layui_layer_lists = $('body>.layui-layer, body>.layui-layer-shade');
            if($layui_layer_lists.length > 0){
                $layui_layer_lists.last().remove();
            }
        }

        if($(':focus').filter(':input, textarea').length == 0){
            //Y:确认弹出层确认
            if(e.keyCode == 89){
                $('body>.layui-layer[type=dialog]>.layui-layer-btn>.layui-layer-btn0').click();
            }
            //N:确认弹出层取消
            if(e.keyCode == 78){
                $('body>.layui-layer[type=dialog]>.layui-layer-btn>.layui-layer-btn1').click();
            }
            //0键关闭弹窗(只关闭最后一个弹出层,防止点一下esc关闭了所有弹出层)
            else if(e.keyCode == 96){
                var $layui_layer_lists = $('body>.layui-layer');
                if($layui_layer_lists.length > 0){
                    $layui_layer_lists.last().remove();
                }
            }
            //T:回到顶部
            else if(e.keyCode == 84){
                $('#gotop_btn').click();
            }
            //上一页
            else if(e.keyCode == 37 || e.keyCode == 65){
                var $prev_btn = $('#pagination>li>a[rel=prev]>span');
                if($prev_btn.length == 0){
                    layer.msg('已经是第1页啦。');
                }
                else{
                    $prev_btn.click();
                }
            }
            //下一页
            else if(e.keyCode == 39 || e.keyCode == 68){
                var $next_btn = $('#pagination>li>a[rel=next]>span');
                if($next_btn.length == 0){
                    layer.msg('已经是最后1页啦。');
                }
                else{
                    $next_btn.click();
                }
            }
        }
    });

    //下拉列表
    $('body').off('click').on('click', 'div.am-dropdown, li.am-dropdown', function(){
        $(this).dropdown('toggle');
    });
});

/*******************************************我是华丽的分割线****************************************************/

//格式化日期成 yyyy-mm-dd
function dateFormat(date){
	var year = date.getFullYear();
	var month = date.getMonth() + 1;
	var day = date.getDate();
	if(month < 10){
		month = '0' + month;
	}
	if(day < 10){
		day = '0' + day;
	}
	return year + '-' + month + '-' + day;
}

//格式化时间成 hh:mm:dd
function timeFormat(date){
	var hours = date.getHours();
	var minutes = date.getMinutes();
	var seconds = date.getSeconds();
	if(hours < 10){
		hours = '0' + hours;
	}
	if(minutes < 10){
		minutes = '0' + minutes;
	}
	if(seconds < 10){
		seconds = '0' + seconds;
	}
	return hours + ':' + minutes + ':' + seconds;
}

//格式化日期时间成 yyyy-mm-dd hh:mm:dd
function datetimeFormat(date){
	return dateFormat(date) + ' ' + timeFormat(date);
}

/*******************************************我是华丽的分割线****************************************************/

//中英文混合字符串长度
function mix_strlen(str){
    var len = 0;
    for (var i = 0; i < str.length; i++) {
        var c = str.charCodeAt(i);
        //单字节加1,双字节加2
        if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
            len++;
        }
        else {
            len += 2;
        }
    }
    return len;
}

/*******************************************我是华丽的分割线****************************************************/

//创建dom element,暂时只支持创建js和css
function create_element(type, url){
    var head = document.head || document.getElementsByTagName('head')[0];
    var element = '';
    if(type == 'js'){
        element = document.createElement('script');
        element.type = 'text/javascript';
        element.src = url;
    }
    else if(type == 'css'){
        var element = document.createElement('link');
        element.href = url;
        element.rel = 'stylesheet';
        element.type = 'text/css';
    }
    head.appendChild(element);
}

/*******************************************我是华丽的分割线****************************************************/

//显示一张图片弹出层
function show_img(This){
	var $this = $(This);
	var img_url = $this.attr('img_url');
	var title = $this.attr('title');

	html = '<div><img src="' + img_url + '"></div>';
	layer.open({
		type: 1,
		title: false,
		closeBtn: 0,
        shadeClose: true,
        shift: 7,
		shade: [0.3, '#000'],
		content: html
	});
}

//显示图片
function show_photo(This, photos_mini_id, photos_id){
    var $this = $(This);
    var index = $this.parent('li').index('#' + photos_mini_id + '>li');
    $('#' + photos_id + '>img').eq(index).click();
}

//显示图片列表
function show_photos(photos_id){
    layer.photos({
        photos: '#' + photos_id,
        closeBtn: 1,
        shadeClose: true,
        shift: 7, //0-6的选择，指定弹出图片动画类型，默认随机
        shade: [0.3, '#000']
    });
}

//删除图片
function del_photo(This, photos_id){
    var $this = $(This);
    var confirm_tip = '确认要删除此图片吗？';
    layer.confirm(confirm_tip, {icon: 3, shade:0, title:'提示'}, function(index){
        var img_index = $this.parent('li').index();
        $this.parent('li').remove();
        $('#' + photos_id + '>img').eq(img_index).remove();
        layer.close(index);
    });
}

/*******************************************我是华丽的分割线****************************************************/

//被邀请加入项目时输入密码直拉一键注册
function onekey_signup(){
    var $onekey_signup_btn = $('#onekey_signup_btn');
    $onekey_signup_btn.prop('disabled', true);
    var encrypt_code = $('#encrypt_code').val();
    var pwd = $('#pwd').val();
    if(encrypt_code == ''){
        $onekey_signup_btn.prop('disabled', false);
        layer.msg('缺少参数。');
        return false;
    }
    if(pwd.length < 6 || pwd.length > 16){
        $onekey_signup_btn.prop('disabled', false);
        layer.msg('密码为6-16位字符组成。');
        return false;
    }
    $.post(
        '/baseapi/account/onekey_signup',
        {
            encrypt_code: encrypt_code,
            pwd: pwd
        },
        function(json){
            if(json.error_code == 'ok'){
                layer.msg('注册成功。');
                setTimeout(function(){
                    document.location = document.location;
                }, 1000);
            }
            else{
                $onekey_signup_btn.prop('disabled', false);
                show_error(json.error_code);
            }
        },
        'json'
    );
    return false;
}

/*******************************************我是华丽的分割线****************************************************/

//生成用户头像url
function create_avatar_url(user_id, avatar_ext){
	var avatar_url = CONFIG['avatar_base_url'];
    if (avatar_ext != null && avatar_ext != '') {
        //如果不存在问号字符,则为系统提供的头像
        if (avatar_ext.indexOf('?') >= 0) {
            var arr = avatar_ext.split('?');
            avatar_url += user_id + '.' + arr[0] + '!avatar?' + arr[1];
        } else {
            avatar_url += 's/' + avatar_ext + '!avatar';
        }
    } else {
        avatar_url += '0.jpg!avatar';
    }
    return avatar_url;
}

/*******************************************我是华丽的分割线****************************************************/

//重发验证邮件
function resend_bind_email(){
    var confirm_tip = '确认重新发送验证邮件吗？';
    layer.confirm(confirm_tip, {icon: 3, shade:0, title:'提示'}, function(index){
        layer.load();
        $.post(
            '/api/account/resend_bind_email',
            {},
            function(json){
                if(json.error_code == 'ok'){
                    layer.alert('邮件重发成功。<br><a href="' + json.email_homepage + '">进入邮箱&raquo;</a>', {icon:0, shade:0, title:'提示'});
                }
                else{
                    layer.closeAll('loading');
                    show_error(json.error_code);
                }
            },
            'json'
        );
        layer.close(index);
    });
}

/*******************************************我是华丽的分割线****************************************************/

//获取文件扩展名
function get_ext_with_type(type){
    var ext = '';
    if(type == 'image/jpeg' || type == 'image/pjpeg'){
        ext = 'jpg';
    }
    else if(type == 'image/png'){
        ext = 'png';
    }
    else if(type == 'image/gif'){
        ext = 'gif';
    }
    return ext;
}

/*******************************************我是华丽的分割线****************************************************/

//第三方账号登录时完善账号
function perfect(){
    var $nickname = $('#nickname');
    var nickname = $nickname.val();

    if(!simple_validate.required(nickname)){
        layer.msg('请填写昵称');
        return false;
    }

    if(!simple_validate.nickname(nickname)){
        layer.msg('昵称只能为中文、字母、数字或横线-');
        return false;
    }

    if(!simple_validate.mix_range(nickname, 1, 16)){
        layer.msg('昵称长度为1-16位，1个中文算2个字符长度');
        return false;
    }

    var post_data = {
        nickname: nickname
    };
    //Geetest验证码
    var $captcha = $('#captcha');
    if($captcha.length > 0){
        post_data.geetest_challenge = $(':input[name=geetest_challenge]').val();
        post_data.geetest_validate = $(':input[name=geetest_validate]').val();
        post_data.geetest_seccode = $(':input[name=geetest_seccode]').val();
    }

    layer.load();
    $.post(
        '/baseapi/account/perfect',
        post_data,
        function(json){
            if(json.error_code == 'ok'){
                document.location = '/workspace';
            }
            else{
                show_error(json.error_code);
                layer.closeAll('loading');
            }
        },
        'json'
    );

    return false;
}